home *** CD-ROM | disk | FTP | other *** search
/ NeXT Enterprise Objects Framework 1.1 / NeXT Enterprise Objects Framework 1.1.iso / NextDeveloper / Examples / EnterpriseObjects / MasteringDetails / EOFExtensions.subproj / KeyGenerator.h next >
Encoding:
Text File  |  1995-02-18  |  1.5 KB  |  39 lines

  1. /* KeyGenerator.h created by cfeder on Wed 26-Oct-1994 */
  2.  
  3. #import <eoaccess/eoaccess.h>
  4.  
  5. // This code provides an example of a generic key generation facility.
  6. // This implementation is closely related to the UniqueKey example
  7. // in /NextDeveloper/Examples/EnterpriseObjects.  See the README file
  8. // there for more information.
  9.  
  10. @interface KeyGenerator : NSObject
  11. {
  12.     EODatabaseDataSource *dataSource;
  13.     EOEntity *entity;
  14.     id currentMaxRecord;  // uniqued object from the database
  15.     unsigned lastGranted, lastReserved;
  16. }
  17. - initWithEntity:(EOEntity *)entity dataSource:(EODatabaseDataSource *)dataSource;
  18. - (unsigned)nextKey;
  19. + keyGeneratorForEntity:(EOEntity *)entity;
  20.     // Returns a key generator object for the given entity.
  21.     // If called repeatedly with the same entity, returns the the same object.
  22. + (unsigned)nexKeyForEntity:(EOEntity *)entity;
  23.     // Convenience for [[KeyGenerator keyGeneratorForEntity] nextKey]
  24.  
  25. @end
  26.  
  27. // Informal protocol on object to tell them to assign
  28. // themselves primary keys.  EO classes may want to override
  29. // this with their own key generation scheme.  The default implementation
  30. // uses the KeyGenerator (above).
  31. @interface NSObject (assignPrimaryKey)
  32. - (void)assignPrimaryKeyForEntity:(EOEntity *)entity;
  33.     // uses the key generator to assign a new primary key to the entity
  34.  
  35. - (void)assignPrimaryKeyIfNotAlreadyPresentForEntity:(EOEntity *)entity;
  36.     // does the above only if the object does not already have a
  37.     // primary key assigned.
  38. @end
  39.